'''
object属性
  setObjectName 给一个Qt对象设置一个名称
  objectName    获取一个Qt对象的名称
  setProperty(属性名称,值)      给一个Qt对象动态的添加一个属性与值
  property("属性名称")      获取一个对象的属性值
  dynamicPropertyNames()    获取一个对象中所有通过setProperty()设置的属性名称



'''

import sys
from PyQt5.QtCore import QObject
from PyQt5.QtWidgets import QWidget, QApplication


class Windows(QWidget):
    def __init__(self):
        super(Windows, self).__init__()
        self.setWindowTitle("QWidget学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        obj = QObject()
        obj.setObjectName('QObject')    # 设置名子
        print(obj.objectName())
        obj.setProperty("debug_level", "DEBUG")
        obj.setProperty("warring_level", "WARNING")
        obj.setProperty("error_level", "ERROR")
        # 获取属性值
        print(obj.property("debug_level"))
        # 获取所有属性值
        print(obj.dynamicPropertyNames())   # 返回一个列表 [PyQt5.QtCore.QByteArray(b'debug_level'), PyQt5.QtCore.QByteArray(b'warring_level'), PyQt5.QtCore.QByteArray(b'error_level')]






if __name__ == '__main__':
    app = QApplication(sys.argv)
    windows = Windows()
    windows.show()

    sys.exit(app.exec_())
